﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using Fiuba.Algo3.Titiritero.Vista;
using Fiuba.Algo3.Titiritero;
using LibreriaDeClases;

namespace BattleCity
{
    public delegate void DelegadoTanque();
    public abstract class TanquePC : Tanque
    {
        protected void nada() { }
        public event DelegadoTanque TanqueDestruido;
        
        override public void Vivir()
        {
            int i = 0;
            while (this.energia > 0 && i < this.Velocidad)
            {
                this.Avanzar();
                Escenario.getEscenario().DetectarImpacto(this);
                i++;
            }
            if (this.energia > 0)
            {
                Atacar();
            }
        }


        public bool LanzarAlEscenario(Point puntoSuperiorIzquierdo)
        {
            this.Figura = new Rectangulo(puntoSuperiorIzquierdo, 30, 30);
            return Escenario.getEscenario().Objetos.Add(this);
        }

        override public void Daniar(int danio)
        {
            this.energia = this.energia - danio;

            if (this.energia <= 0)
            {
                Marcador.getMarcador().Puntos = this.getPuntos();
                Escenario.getEscenario().Objetos.Remove(this);
                Point ubicacion = new Point();
                ubicacion = this.Figura.getUbicacion();
                Explosion unaExplosion = new Explosion(ubicacion);
                Escenario.getEscenario().Objetos.Add(unaExplosion);
                arma.LanzarAlEscenario(this.Figura.getCentro());
                TanqueDestruido();
            }
        }

        virtual protected void Atacar()
        {
            arma.DispararAutomatica(this.Figura.getCentro(), this.DireccionAvanzar());
        }

    }
    
}
